The present disclosure relates to computing systems, and, in particular, to providing access to computing resources in a virtualized computing environment.
Cloud computing is a computing paradigm where shared resources, such as processor(s), software, and information, are provided to computers and other devices on demand typically over a network, such as the Internet. In a cloud computing environment, details of the computing infrastructure, e.g., processing power, data storage, bandwidth, and/or other resources are abstracted from the user. The user does not need to have any expertise in or control over such computing infrastructure resources. Cloud computing typically involves the provision of dynamically scalable and/or virtualized resources over the Internet. A user may access and use such resources through the use of a Web browser. A typical cloud computing provider may provide an online application that can be accessed over the Internet using a browser. The cloud computing provider, however, maintains the software for the application and some or all of the data associated with the application on servers in the cloud, i.e., servers that are maintained by the cloud computing provider rather than the users of the application.
FIG. 1 illustrates a conventional cloud service model that includes Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS). Infrastructure as a Service, delivers computer infrastructure—typically a platform virtualization environment—as a service. Rather than purchasing servers, software, data-center space or network equipment, clients instead buy those resources as a fully outsourced service. Suppliers typically bill such services on a utility computing basis and the amount of resources consumed. Platform as a Service delivers a computing platform as a service. It provides an environment for the deployment of applications without the need for a client to buy and manage the underlying hardware and software layers. Software as a Service delivers software services over the Internet, which reduces or eliminates the need for the client to install and run an application on its own computers, which may simplify maintenance and support.
Virtualized computing environments may be used to provide computing resources to end users. In a cloud computing environment, the physical hardware configuration is hidden from the end user. Cloud computing systems may include servers, network storage devices, routers, gateways, communication links, and other devices. Because the physical hardware and software platforms on which cloud computing system is implemented are hidden within a “cloud,” they can be managed, upgraded, replaced or otherwise changed by a system administrator without the customer being aware of or affected by the change.
In a typical cloud computing environment, applications may be executed on virtual machines, which are isolated guest operating systems installed within a host system. Virtual machines are typically implemented with either software emulation or hardware virtualization, or both. A single hardware and/or software platform may host a number of virtual machines, each of which may have access to some portion of the platform's resources, such as processing resources, storage resources, etc.
Cloud computing service providers typically manage large pools of physical servers, networking equipment, and storage equipment and make a business of renting virtualized slices of physical capacity to customers. Cloud computing service providers typically use their own resource management algorithms to pack customer virtualized units of capacity into physical resources to maximize utilization and efficiency metrics that are most beneficial to their business models. Despite the specification of granular capacity offerings by cloud computing service providers based on defined units of capacity, from the perspective of a given customer, the performance of the rented unit of service capacity is not independent of a) the activities and demand of other customer services that are sharing the same physical resource and b) the underlying physical hardware upon which the virtual machines are deployed and often may not deliver the specified level of performance. Benchmarking has shown that the achieved performance of an actual instance rented from cloud computing service provider can be highly variable and as low as half the advertised instance performance—a difference comparable to the scaling granularity of the offered units of capacity. This difference can be ascribed to a) interference effects from the activities of other customer instances assigned by the cloud computing service provider to share the same physical resources, effects that are currently beyond the ability of a customer to control and b) differences in the underlying hardware resources of different instances of the same virtual machine type. The result is a large potential inefficiency in the spending of cloud computing customers on service capacity.
The approaches described in this section could be pursued, but are not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated herein, the approaches described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.